#ifndef __BYTE_FIFO_H__
#define __BYTE_FIFO_H__

#include <stdint.h>
#include <stdbool.h>

#define FIFO_SIZE 256 // 定义FIFO缓冲区大小（需为2的整数次幂）

typedef struct
{
    uint8_t buffer[FIFO_SIZE]; // 数据缓冲区
    int head;             // 读指针
    int tail;             // 写指针
    int is_full;              // 缓冲区满标志
} ByteFifo;


// 初始化FIFO
void byte_fifo_init(ByteFifo *fifo);

// 判断FIFO是否为空
bool byte_fifo_is_empty(ByteFifo *fifo);

// 判断FIFO是否已满
bool byte_fifo_is_full(ByteFifo *fifo);

// 向FIFO写入数据（中断中使用）
void byte_fifo_write(ByteFifo *fifo, uint8_t data);

// 从FIFO读取数据（任务中使用）
uint8_t byte_fifo_read(ByteFifo *fifo);

#endif